package com.changsideal.excel.annotation;

import com.changsideal.tool.Constant;
import org.apache.poi.ss.usermodel.HorizontalAlignment;

import java.lang.annotation.*;

/**
 * @ClassName Column
 * @Description TODO
 * @Author Create by Chansideal.Haosc
 * @Date 2019/7/5 14:34
 * @Version 1.0
 **/
@Documented
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Column {

    /**
     * 列名，如不赋值则默认为空
     **/
    String value() default "";

    /**
     * 列名，是否引入此列映射，默认引入
     **/
    boolean importFlag() default true;

    /**
     * 列名，是否引入此列组装到sql语句中，默认不引入，生成sql需手动设值为true
     **/
    boolean sqlFlag() default false;

    /**
     * 列宽，如不赋值，则设置为默认值
     **/
    int width() default 120;

    /**
     * 列居中样式，如不赋值则默认居中
     **/
    HorizontalAlignment alignStyle() default HorizontalAlignment.CENTER;

    /**
     * 列时间格式化格式，针对日期格式列
     **/
    String dateFormat() default Constant.YEARFORMAT;

    /** 列排序序号，用于设置生成excel**/
    /**
     * !!!! V1.0版本因时间有限，排序相关暂只做小部分最佳实践，实际转bean及生成Excel等
     * 排序暂时未实现，后续版本将继续实践处理，V1.0关于排序实践是将属性值进行了按注解属性排序，很好用，思路清晰
     **/
    int order() default 0;

    /**
     * !!!! V1.0版本因时间有限，排序相关暂只做小部分最佳实践，实际转bean及生成Excel等
     * 排序暂时未实现，后续版本将继续实践处理，V1.0关于排序实践是将属性值进行了按注解属性排序，很好用，思路清晰
     **/
    int sqlOrder() default 0;
}
